package org.jooby.internal.aws;
import static org.easymock.EasyMock.expect;
import static org.junit.Assert.assertEquals;
import org.jooby.test.MockUnit;
import org.junit.Test;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSSessionCredentials;
import com.typesafe.config.Config;
public class ConfigCredentialsProviderTest {
@Test
public void defaults() throws Exception {
new MockUnit(Config.class)
.run(unit -> {
new ConfigCredentialsProvider(unit.get(Config.class));
});
}
@Test
public void refresh() throws Exception {
new MockUnit(Config.class)
.run(unit -> {
new ConfigCredentialsProvider(unit.get(Config.class)).refresh();
});
}
@Test
public void serviceWithDefaultConfig() throws Exception {
String accessKey = "accessKey";
String secretKey = "secretKey";
new MockUnit(Config.class)
.expect(unit -> {
Config config = unit.get(Config.class);
expect(config.hasPath("aws.s3.accessKey")).andReturn(false);
expect(config.hasPath("aws.s3.secretKey")).andReturn(false);
expect(config.hasPath("aws.s3.sessionToken")).andReturn(false);
expect(config.hasPath("aws.sessionToken")).andReturn(false);
expect(config.getString("aws.accessKey")).andReturn(accessKey);
expect(config.getString("aws.secretKey")).andReturn(secretKey);
})
.run(unit -> {
AWSCredentials creds = new ConfigCredentialsProvider(unit.get(Config.class))
.service("s3").getCredentials();
assertEquals("accessKey", creds.getAWSAccessKeyId());
assertEquals("secretKey", creds.getAWSSecretKey());
});
}
@Test
public void serviceWithSessionToken() throws Exception {
String accessKey = "accessKey";
String secretKey = "secretKey";
String sessionToken = "sessionToken";
new MockUnit(Config.class)
.expect(unit -> {
Config config = unit.get(Config.class);
expect(config.hasPath("aws.s3.accessKey")).andReturn(false);
expect(config.hasPath("aws.s3.secretKey")).andReturn(false);
expect(config.hasPath("aws.s3.sessionToken")).andReturn(false);
expect(config.hasPath("aws.sessionToken")).andReturn(true);
expect(config.getString("aws.accessKey")).andReturn(accessKey);
expect(config.getString("aws.secretKey")).andReturn(secretKey);
expect(config.getString("aws.sessionToken")).andReturn(sessionToken);
})
.run(unit -> {
AWSSessionCredentials creds = (AWSSessionCredentials) new ConfigCredentialsProvider(
unit.get(Config.class))
.service("s3").getCredentials();
assertEquals("accessKey", creds.getAWSAccessKeyId());
assertEquals("secretKey", creds.getAWSSecretKey());
assertEquals("sessionToken", creds.getSessionToken());
});
}
@Test
public void serviceWithCustomSessionToken() throws Exception {
String accessKey = "accessKey";
String secretKey = "secretKey";
String sessionToken = "sessionToken";
new MockUnit(Config.class)
.expect(unit -> {
Config config = unit.get(Config.class);
expect(config.hasPath("aws.s3.accessKey")).andReturn(false);
expect(config.hasPath("aws.s3.secretKey")).andReturn(false);
expect(config.hasPath("aws.s3.sessionToken")).andReturn(true);
expect(config.getString("aws.accessKey")).andReturn(accessKey);
expect(config.getString("aws.secretKey")).andReturn(secretKey);
expect(config.getString("aws.s3.sessionToken")).andReturn(sessionToken);
})
.run(unit -> {
AWSSessionCredentials creds = (AWSSessionCredentials) new ConfigCredentialsProvider(
unit.get(Config.class))
.service("s3").getCredentials();
assertEquals("accessKey", creds.getAWSAccessKeyId());
assertEquals("secretKey", creds.getAWSSecretKey());
assertEquals("sessionToken", creds.getSessionToken());
});
}
@Test
public void serviceWithCustomAccessKey() throws Exception {
String accessKey = "s3accessKey";
String secretKey = "secretKey";
new MockUnit(Config.class)
.expect(unit -> {
Config config = unit.get(Config.class);
expect(config.hasPath("aws.s3.accessKey")).andReturn(true);
expect(config.hasPath("aws.s3.secretKey")).andReturn(false);
expect(config.hasPath("aws.s3.sessionToken")).andReturn(false);
expect(config.hasPath("aws.sessionToken")).andReturn(false);
expect(config.getString("aws.s3.accessKey")).andReturn(accessKey);
expect(config.getString("aws.secretKey")).andReturn(secretKey);
})
.run(unit -> {
AWSCredentials creds = new ConfigCredentialsProvider(unit.get(Config.class))
.service("s3").getCredentials();
assertEquals("s3accessKey", creds.getAWSAccessKeyId());
assertEquals("secretKey", creds.getAWSSecretKey());
});
}
@Test
public void serviceWithCustomSecretKey() throws Exception {
String accessKey = "accessKey";
String secretKey = "s3secretKey";
new MockUnit(Config.class)
.expect(unit -> {
Config config = unit.get(Config.class);
expect(config.hasPath("aws.s3.accessKey")).andReturn(false);
expect(config.hasPath("aws.s3.secretKey")).andReturn(true);
expect(config.hasPath("aws.s3.sessionToken")).andReturn(false);
expect(config.hasPath("aws.sessionToken")).andReturn(false);
expect(config.getString("aws.accessKey")).andReturn(accessKey);
expect(config.getString("aws.s3.secretKey")).andReturn(secretKey);
})
.run(unit -> {
AWSCredentials creds = new ConfigCredentialsProvider(unit.get(Config.class))
.service("s3").getCredentials();
assertEquals("accessKey", creds.getAWSAccessKeyId());
assertEquals("s3secretKey", creds.getAWSSecretKey());
});
}
}